# 需求：打开注册页面A，暂停2秒后，滚动条拉到最底层，再暂停2秒后拉回最上层
# 核心：通过执行JavaScript语句控制浏览器滚动条（selenium无直接操作滚动条的API，需借助JS）

# 从time模块导入sleep函数，用于操作间隔暂停（等待页面加载、观察滚动效果）
from time import sleep
# 从selenium库导入webdriver模块，用于创建浏览器驱动、控制浏览器
from selenium import webdriver
# 导入ActionChains类（此处未实际使用，保留原导入，可后续扩展）
from selenium.webdriver import ActionChains
# 导入By类：适配新版selenium，规范定位方式（此处未直接使用，保留备用）
from selenium.webdriver.common.by import By
# 从selenium导入Keys类（此处未实际使用，保留原导入，可后续扩展）
from selenium.webdriver.common.keys import Keys
# 导入WebDriverWait类（此处未实际使用，保留原导入，可后续扩展显式等待）
from selenium.webdriver.support.wait import WebDriverWait

# 1. 初始化并打开Chrome浏览器
# executable_path：指定ChromeDriver驱动的本地绝对路径（适配selenium3及以下版本）
driver = webdriver.Chrome(executable_path='D:/chrome_driver/chromedriver.exe')
# 注释：selenium4及以上版本推荐写法（无需手动指定驱动路径）
# 需提前安装 webdriver-manager 库（pip install webdriver-manager），自动匹配浏览器版本下载驱动
# driver = webdriver.Chrome() # 创建Chrome浏览器对象，后续通过该对象执行所有操作

# 放大浏览器窗口
# maximize_window()：将窗口调整为屏幕最大尺寸，确保滚动效果更直观（避免窗口过小导致滚动不明显）
driver.maximize_window()

# 2. 访问目标页面（注册A页面）
# get()方法：接收完整网络URL，让浏览器加载并显示该网页
driver.get("http://121.43.169.97:8848/pageA.html")

# 暂停2秒：等待页面完全加载（包括动态内容、图片等），避免滚动时页面未渲染完成
sleep(2)

# ---------------------- 核心操作1：滚动条拉到最底层 ----------------------
# 定义JavaScript语句：控制滚动条滚动
# window.scrollTo(x, y)：浏览器内置滚动方法，接收两个参数（x轴偏移量，y轴偏移量）
# 参数说明：
#   x：水平滚动距离（像素），0表示不水平滚动（多数页面无需水平滚动）
#   y：垂直滚动距离（像素），10000是一个足够大的数值（远超多数页面高度，确保滚到最底）
# 原理：无论页面实际高度多少，设置一个超大的y值，浏览器会自动滚动到页面底部
js = "window.scrollTo(0, 10000)"  # 0 x（水平不动）, 10000 y（垂直滚到最底）

# 执行JavaScript语句：selenium通过execute_script()方法执行JS代码，实现滚动条控制
driver.execute_script(js)

# 暂停2秒：观察滚动到最底层的效果
sleep(2)

# ---------------------- 核心操作2：滚动条拉回最上层 ----------------------
# 定义JavaScript语句：滚动到页面顶部
# window.scrollTo(0, 0)：x=0，y=0表示滚动到屏幕左上角（页面初始位置，即最上层）
js2 = "window.scrollTo(0, 0)"

# 执行JS语句，滚动回顶部
driver.execute_script(js2)

# （可选）延长暂停时间观察最终效果，然后关闭浏览器
sleep(2)
# 关闭浏览器并释放资源
driver.quit()